0 RUN00100 1 REM" 2 [143]" PONZ0*1983*WATERLOO 3 REM" 100 [151]53281,15:[151]53280,12:[153]"STOP":[153]"LOAD C64 TUTOR-3 101 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]" 102 PRINT"[221]  MORE ON THE C64 [146] [221]":MS$=" WELCOME! " 103 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189][144]" 104 SN$="1000":GOSUB63200:GOSUB63600 105 GOSUB60000:GOSUB59000 1000 GOSUB60000 1010 PRINT"[147][209]I STORE INFO IN 8 (BINARY) BIT "CHR$(34)"BYTES"CHR$(34)"." 1020 PRINT"[209]SINCE 2^8=256, EACH BYTE CAN HOLD A" 1030 PRINT" NUMBER FROM 0 TO 255 INCLUSIVE." 1040 PRINT"[209]TWO BYTES ARE USED TO ADDRESS" 1050 PRINT" 2^16 MEMORY LOCATIONS:0,1,2,...,65535" 1060 PRINT"[209]YOU CAN FIND WHAT'S IN EACH BY PEEK[146]ING:" 1070 PRINT"FOR I=100 TO 200:PRINT PEEK(I);:NEXT" 1080 PRINT"[209]THIS MAY BE ENTERED DIRECTLY" 1090 PRINT" AND WILL PRINT THE CONTENTS" 1100 PRINT" OF LOCATIONS 100 TO 200." 1110 PRINT"[209]SOME OF M[146]EMORY IS R[146]EAD O[146]NLY(ROM)." 1120 PRINT"[209]SOME IS R[146]ANDOM A[146]CCESS(RAM)." 1130 PRINT"[209]YOU CAN WRITE INTO RAM BY POKE[146]ING." 1140 PRINT" POKE1100,1" 1145 PRINT"[209]THIS WILL PUT THE NO. 1 IN LOC'N 1100." 1146 GOSUB63000 1160 PRINT"[147]NOTE[146]: FOR POKE M,N " 1170 PRINT:PRINT"[209]M[146] MUST BE IN [0,65535],N[146] IN [0,255]." 1180 PRINT"[209]I USE 0 THRU' 1023 MYSELF..YOU USE " 1190 PRINT" 2048 TO 40959 FOR BASIC[146] PROGRAMS.." 1195 PRINT"[209]I USE 1024 THRU' 2047 1200 [153]" TO STORE THE 1000 CHARACTERS APPEARING" 1210 [153]" ON THE SCREEN,ETC.ETC" 1211 [153]"(NOTE:80 COLUMN PETS HAVE 2000) 1220 PRINT"SCREEN MEMORY[146]" 1230 PRINT"[209]THESE 1000 LOC'NS START AT $0400" 1240 PRINT" 0400(HEXADECIMAL)=4*256=1024(DECIMAL)" 1245 PRINT"[209]YOU CAN CHANGE WHAT'S" 1250 PRINT" ON THE SCREEN WITH A PRINT[146] STATEMENT" 1260 PRINT" PRINT "CHR$(34)"ABC"CHR$(34) 1270 PRINT" OR BY 'POKEING' SCREEN MEMORY:" 1280 PRINT" POKE1100,1" 1290 PRINT"[209]THIS PUTS 1[146] INTO SCREEN MEMORY LOC'N" 1300 PRINT" 1100, AND 1[146] CORRESPONDS TO AN "CHR$(34)"A"CHR$(34) 1310 PRINT" SO I'LL PRINT THE LETTER "CHR$(34)"A"CHR$(34) 1316 GOSUB63000 1320 PRINT"[147]TO SEE WHAT NO. IN [0,255] CORRESPONDS" 1330 PRINT"TO WHICH SYMBOL, YOU CAN TRY THIS:" 1340 PRINT"10 FOR I=0 TO 255" 1350 PRINT"20 POKE1024+I,I " 1360 PRINT"30 NEXT " 1370 PRINT"..AND TRY POKE1100,N[146]" 1371 PRINT"WITH 'N'=0,1,2,...OR 255.":MS$=" TRY IT![146]" 1380 PRINT"THEN TYPE @[146] TO CONTINUE!":GOSUB63100 1385 GOSUB63000:PRINT"" 1390 SN$="02000":GOTO63300 2000 GOSUB60000:PRINT"[147][166][166][166][166][166][166]SOME SPECIAL LOCATIONS[146][166][166][166][166]" 2010 PRINT:PRINT"[209]IN 197 I KEEP TRACK OF WHAT KEY IS" 2020 PRINT" DEPRESSED. TO SEE THE KEY[146] VS. NUMBER" 2030 PRINT" CORRESPONDENCE, TRY:" 2040 PRINT"50 PRINT PEEK(197);" 2050 PRINT"60 GO TO 50 " 2060 PRINT"THEN RUN AND BANG ON A KEY!" 2065 PRINT"THEN TYPE @[146] TO CONTINUE." 2070 SN$="03000":GOTO63300 3000 GOSUB60000 3010 PRINT"[147]PRINTCHR$(14) WILL CAUSE" 3040 PRINT"ME TO SWITCH TO "CHR$(34)"LOWER"CHR$(34)" CASE." 3050 PRINT"YOU MIGHT LIKE TO TRY IT!" 3060 PRINT"IN PARTICULAR, TRY RUNNING:" 3070 PRINT"10 FOR I=0 TO 255 " 3071 PRINT"20 POKE1024+I,I " 3072 PRINT"30 PRINTCHR$(14+K);" 3073 PRINT"40 K=128-K:NEXT " 3080 MS$="DO A CHR$[146]!":GOSUB63100 3085 PRINT"...THEN TYPE @[146] TO CONTINUE" 3090 SN$="04000":GOTO63300 4000 POKE59468,12:GOSUB60000 4020 PRINT"PRINTCHR$(142) 4030 [153]"WILL PUT ME BACK TO UPPER CASE." 4040 [153]"(null)IN 160,161 & 162 I KEEP THE TIME" 4050 [153]" ...FROM THE MOMENT YOU TURN ME ON." 4060 [153]"(null)I'VE GOT A BUILT-IN " 4070 [153]" CRYSTAL-CONTROLLED CLOCK." 4080 [153]" I KEEP THE NUMBER OF JIFFIESWAIT IN" 4090 [153]" MEMORY LOC'NS 160,161,162" 4100 [153]" A JIFFIEWAIT IS 1/60 SECOND." 4110 [153]"(null)YOU COULD WRITE A PROGRAM TO CONVERT" 4120 [153]" THIS TO HOURS:MINUTES:SECONDS.." 4130 [153]" OR YOU COULD USE MY BUILT-IN ROUTINE!" 4140 [153]"100 PRINT TI$" 4150 [153]" HERE,TI$ WILL GIVE HHMMSS LIKE SO:":[153]"015209" 4155 [153]"01WAIT=HOURS 52WAIT=MINUTES 09WAIT=SECONDS.":[141]63000 4160 [153]"LOADI'LL PRINT OUT TI$ SO YOU CAN SEE HIM:" 4170 AA$[178]TI$:H$[178][200](AA$,2):M$[178][202](AA$,3,2):S$[178][201](AA$,2) 4175 [129]T[178]1[164]500:[130] 4180 [153]" "AA$ 4190 [153]" ^ THAT'S HIM!" 4195 [153]"IT'S BEEN:" 4196 [153]""H$"WAIT HOURS,"M$"WAIT MINUTES & "S$"WAIT SECONDS" 4197 [153]"SINCE YOU TURNED THE C64WAIT ON!" 4200 [153]"RETURNWAIT..":[141]63001 4240 [153]"LOADYOU CAN SET THE CORRECT TIME BY TYPING:" 4250 [153]"TI$="[199](34)"093000"[199](34) 4260 [153]"THEN I'LL COUNT JIFFIES STARTING WITH" 4270 [153]"A COUNT CORRESPONDING TO 9:30 A.M." 4280 [153]"(000000=MIDNIGHT!!)":[141]63000 4290 [153]"LOADTHE VARIABLE TIWAIT GIVES THE JIFFIE-COUNT" 4300 [153]"I'LL PRINT HIM TOO:":[129]T[178]1[164]500:[130]:[153]"" 4310 [153]" "TI 4320 [153]" ^ THAT'S HIM!" 4330 [153]"PLEASE, DON'T USE TI$WAIT OR TIWAIT FOR ANY" 4340 [153]"OF YOUR VARIABLE NAMES!" 4350 [153]" USRUSRUSRUSR 4361 PRINT"RETURN[146]..":GOSUB63001 4400 PRINT"[147][166][166][166][166][166][166][166][166][166]INPUT/OUTPUT[146][146][166][166][166][166][166][166][166][166]" 4410 PRINT"[209]TO WRITE DATA ON TAPE YOU " 4420 PRINT" OPEN A WRITE CHANNEL TO THE CASSETTE" 4430 PRINT"[209]YOU'LL WANT TO GIVE THE DATA A NAME[146],TOO" 4440 PRINT" AND YOU'LL WANT TO DISTINGUISH BETWEEN" 4450 PRINT" WRITING[146] TO TAPE AND READING[146] FROM TAPE." 4460 PRINT"200 OPEN3,1,1,"CHR$(34)"DATA"CHR$(34)"[146]" 4470 PRINT"OPEN A CHANNEL(#3)TO THE TAPE DRIVE(#1)" 4480 PRINT" FOR WRITING[146] (THE LAST #1 MEANS WRITE[146])" 4490 PRINT"210 FOR I=1TO10" 4500 PRINT"220 PRINT#3,I " 4510 PRINT"230 NEXT " 4520 PRINT"240 CLOSE 3 " 4530 PRINT"[209]THIS WRITES THE NUMBERS 1,2,..10" 4540 PRINT" ON THE TAPE-FILE CALLED "CHR$(34)"DATA"CHR$(34) 4560 GOSUB63000 4570 PRINT"[147]IT'S VERY IMPORTANT TO CLOSE[146] THE " 4580 PRINT"WRITE CHANNEL AFTER PRINTING TO TAPE!!" 4590 PRINT"(ELSE I WON'T PRINT AN END-MARKER" 4600 PRINT"AND MAY NOT WRITE THE LAST BIT OF DATA)." 4620 PRINT"[209]TO READ[146] A FILE(CALLED,SAY,'DATA')" 4630 PRINT"300 OPEN2,1,0,"CHR$(34)"DATA"CHR$(34) 4635 PRINT"310 FOR I=1TO10 " 4640 PRINT"320 INPUT#2,A(I) " 4650 PRINT"330 NEXT " 4660 PRINT"HERE THE READ[146] CHANNEL IS #2" 4670 PRINT"..THE LAST #0 MEANS READ[146]" 4680 PRINT"IT IS ASSUMED THERE ARE 10 NO'S TO READ." 4700 GOSUB63000 4710 PRINT"[147]A PRINT# STATEMENT:" 4720 PRINT"220 PRINT#3,I" 4730 PRINT"WILL WRITE THE VALUE OF I,FOLLOWED BY" 4740 PRINT"A RETURN[146] & SPACES[146]!" 4745 PRINT"YOU DON'T WANT THE 'SPACES'[146]!" 4750 PRINT"THE CORRECT WAY IS:" 4760 PRINT"220 PRINT#3,I;CHR$(13);" 4770 PRINT"HERE YOU[146] SPECIFY THE RETURN[146]=CHR$(13)" 4775 PRINT"..WITHOUT SPACES...." 4780 PRINT"THE ;[146] AT THE END AVOIDS 'LINE FEED' TOO!":GOSUB63000 4790 PRINT"[147]THE STATEMENT:" 4800 PRINT"240 CLOSE 3" 4810 PRINT"WRITES AN END-OF-FILE MARKER ON TAPE." 4820 PRINT"WHEN READ[146]ING DATA YOU CHECK FOR THIS:" 4830 PRINT"IF ST=64 THEN [146]..." 4840 MS$=" CLOSE[146]!":GOSUB63100 4850 GOSUB63000 4860 PRINT"[147]THE WRITE TO TAPE[146] ROUTINE IS THEN:" 4870 PRINT"200 OPEN3,1,1,"CHR$(34)"DATA"CHR$(34)" " 4880 PRINT"210 FOR I=1TO10 " 4890 PRINT"220 PRINT#3,I;CHR$(13);" 4900 PRINT"230 NEXT " 4910 PRINT"240 CLOSE 3 " 4920 PRINT"THE READ FROM TAPE[146] ROUTINE IS:" 4930 PRINT"300 OPEN2,1,0,"CHR$(34)"DATA"CHR$(34)" " 4940 PRINT"310 INPUT#2,A(J) " 4950 PRINT"320 IF ST<>64THENJ=J+1:GOTO310" 4960 PRINT"330 CLOSE2 " 4970 GOSUB63000:SN$="05000":GOSUB63600 5000 GOSUB60000 5005 PRINT"[147]TO CREATE A FILE[146]:" 5010 PRINT"10 OPEN15,8,15,"CHR$(34)"I"CHR$(34)"+DR$ " 5020 PRINT"20 OPEN2,8,2,DR$+"CHR$(34)":"CHR$(34)"+NM$+"CHR$(34)",S,W"CHR$(34) 5030 PRINT"30 PRINT#2,A;CHR$(13); " 5040 PRINT"DR$[146] IS DRIVE # [201]PREVIOUSLY" 5050 PRINT"NM$[146] IS FILE NAME [203]DEFINED!" 5060 PRINT"10[146] OPENS THE COMMAND CHANNEL #15" 5070 PRINT"AND I[146]NITIALIZES THE DRIVE DR$." 5075 PRINT"(NOT NECESSARY ON 'NEWER' DRIVES)." 5080 PRINT"20[146] OPENS A W[146]RITE CHANNEL,#2," 5090 PRINT"FOR A S[146]EQUENTIAL(DATA) FILE CALLED NM$" 5100 PRINT"30[146] PRINTS A NUMBER,A[146],TO THE DATA FILE." 5110 PRINT"[209]YOU MAY REPEAT STATEMENT 30":PRINT"WITH VARIOUS A[146]'S,THEN.." 5120 PRINT"40 CLOSE2:CLOSE15":PRINT 5130 GOSUB63000 5140 PRINT"[147]TO READ FROM A FILE[146]:" 5150 PRINT"60 OPEN15,8,15,"CHR$(34)"I"CHR$(34)"+DR$ " 5160 PRINT"70 OPEN2,8,2,DR$+"CHR$(34)":"CHR$(34)"+NM$+"CHR$(34)",S,R"CHR$(34) 5170 PRINT"80 INPUT#2,A(J) " 5180 PRINT"90 IFST<>64THENJ=J+1:GOTO80 " 5190 PRINT"100 CLOSE2:CLOSE15 " 5195 PRINT"60[146] INITIALIZES ETC." 5200 PRINT"70[146] OPENS A R[146]EAD CHANNEL TO FILE NM$." 5210 PRINT"90[146] CHECKS FOR END-OF-FILE(STATUS=64)." 5216 GOSUB63000 5218 PRINT"[147]TO REITERATE[146]: WHEN WRITING DATA":PRINT"DO NOT[146] USE:" 5219 PRINT"PRINT#1,A,B$,C[146] OR PRINT#1,A;B$;C;[146]" 5220 PRINT"INSTEAD USE:" 5221 PRINT"PRINT#1,A;CHR$(13);B$;CHR$(13);..ETC" 5222 PRINT"IF IT'S PAINFULL TO TYPE 'CHR$(13)' THEN" 5223 PRINT"DEFINE CR$=CHR$(13) AND USE:" 5224 PRINT"PRINT#1,A;CR$;B$;CR$;C;CR$;[146]" 5226 GOSUB63000 5340 PRINT"[147][166][166][166][166][166][166][166][166]RANDOM NUMBERS[146][166][166][166][166][166][166][166][166][166][166][166]" 5350 PRINT"[209]I HAVE A RANDOM NUMBER GENERATOR[146]." 5360 PRINT"10 X=RND(K)" 5365 PRINT"[209]EACH NEGATIVE[146] K DETERMINES A" 5370 PRINT" UNIQUE SEED[146]. THEN:" 5375 PRINT"20 X1=RND(1)" 5380 PRINT"30 X2=RND(1)" 5385 PRINT"40 X3=RND(1)" 5390 PRINT"[209]HERE X1,X2,X3,..IS A 'RANDOM SEQUENCE'" 5391 PRINT" OF NUMBERS IN 0 10 KEYS!" 9085 PRINT"(ELSE I WON'T GET THEM ALL)" 9090 PRINT"TRY IT? THEN:" 9100 PRINT"TYPE @ [146]":SN$="10000":GOTO63300 10000 GOSUB60000:PRINT"[147][166][166][166][166][166][166]6[146][166][166][166][166][166][166]" 10010 PRINT"MEMORY LOCATION 198 (DECIMAL) HOLDS" 10020 PRINT"THE NUMBER OF CHARACTERS IN THE " 10030 PRINT"KEYBOARD BUFFER." 10040 PRINT"YOU CAN CLEAR THE BUFFER WITH:" 10050 PRINT"10 FORI=1TO10:GETA$:NEXT" 10060 PRINT"OR" 10070 PRINT"10 GETA$:IFA$<>"CHR$(34)CHR$(34)"THEN10" 10080 PRINT"OR" 10090 PRINT"10 POKE198,0" 10100 GOSUB63000 11000 PRINT"[147][166][166][166][166][166][166]7[146][166][166][166][166][166][166]" 11010 PRINT"MEMORY LOCATIONS 55 AND 56 HOLD THE" 11020 PRINT"LOCATION OF THE 'END OF BASIC MEMORY'." 11030 PRINT"PRINT IT OUT BY TYPING:" 11040 PRINT"?PEEK(55)+256*PEEK(56)" 11050 PRINT"THEN TYPE @" 11060 PRINT"?PEEK(55)+256*PEEK(56)[145]":SN$="12000":GOTO63300 12000 GOSUB60000:X=32768 12020 PRINT"[147][166][166][166][166][166][166]8[146][166][166][166][166][166][166]TOP="X 12030 PRINT"IF YOU WANT TO STORE SOME NUMBERS" 12040 PRINT"FOR SAFE KEEPING, YOU CAN CHANGE THE" 12050 PRINT"TOP OF BASIC MEMORY, BY POKING A NEW[157][157][157][184][184][184]" 12060 PRINT"'TOP' INTO 55 & 56, SO THE NEW TOP IS":X$=MID$(STR$(X-100),2) 12070 PRINT"SAY, "X$", GIVING YOU 100 PLACES" 12080 PRINT"TO STORE YOUR NUMBERS." 12090 PRINT"HOW TO STORE THEM? POKE[146] THEM INTO RAM!" 12100 PRINT"10 FORI=0TO99:POKE"X$"+I,A(I):NEXT":GOSUB63000 13000 PRINT"[147][166][166][166][166][166][166]9[146][166][166][166][166][166][166]" 13010 PRINT"EVERY JIFFY (60 TIMES/SECOND) I" 13020 PRINT"STOP WHAT I'M DOING AND UPDATE THE" 13030 PRINT"JIFFY CLOCK,AND..AMONG OTHER THINGS.." 13040 PRINT"CHECK TO SEE IF YOU PRESSED THE" 13050 PRINT"RUN/STOP[146] KEY..." 13060 PRINT"..AND, IF SO, THEN I WILL STOP![157][157][157][157][157][184][184][184][184]" 13070 PRINT"I DO THESE THINGS (60 TIMES/SECOND)" 13080 PRINT"BY JUMPING TO A MAGIC MEMORY LOCATION." 13090 GOSUB63000 13100 PRINT"[147]THIS MAGIC LOCATION IS STORED IN" 13110 PRINT"MEMORY LOCATIONS 788 & 789." 13120 PRINT"I JUMP TO PEEK(788)+256*PEEK(789)" 13130 PRINT"HOLD ON..I'LL TELL YOU WHERE I JUMP...":GOSUB63000 13140 PRINT"[147]....IT'S TO"; 13150 A9=7*4096+15*256+14*16+10:ML=PEEK(A9)+256*PEEK(A9+1):PRINT""ML 13160 PRINT"AT LOCATION"ML" ARE INSTRUCTIONS" 13170 PRINT"WHICH CHECK FOR STOP[146], ETC.." 13180 PRINT"YOU CAN BYPASS THE 'CHECK FOR STOP'" 13190 PRINT"BY HAVING ME JUMP TO "ML+3"[146]!!" 13200 PRINT"..SIMPLY POKE788,PEEK(788)+3" 13210 PRINT"IN A PROGRAM AND STOP[146] WILL BE IGNORED!" 13220 GOSUB63000 13230 PRINT"[147]BUT REMEMBER TO POKE788,PEEK(788)-3" 13240 PRINT"LATER IN THE PROGRAM.." 13250 PRINT"CARE (DARE) TO TRY IT??" 13260 PRINT"REMEMBER:" 13270 PRINT"POKE788,PEEK(788)+3" 13280 PRINT"THEN WRITE A PROGRAM LIKE:" 13290 PRINT"10 FORI=1TO10000:NEXT" 13300 PRINT"AND TRY TO STOP IT." 13400 PRINT"EVENTUALLY..TYPE:" 13410 PRINT"POKE788,PEEK(788)-3" 13420 PRINT"..COME TO THINK OF IT.." 13430 PRINT"TRY IT AFTER[146] YOU'VE ENDED TUTOR[146]!":GOSUB63000 14000 PRINT"[147]THE SYS COMMAND" 14010 PRINT"I DON'T UNDERSTAND 'BASIC'." 14020 PRINT"I UNDERSTAND 'MACHINE LANGUAGE'." 14030 PRINT"HOWEVER I HAVE A BUILT-IN INTERPRETER" 14040 PRINT"WHO UNDERSTANDS BOTH!" 14050 PRINT"HE TRANSLATES YOUR BASIC COMMANDS" 14060 PRINT"INTO MACHINE LANGUAGE COMMANDS FOR ME." 14070 PRINT"THIS 'BASIC INTERPRETER' IS A SET OF" 14080 PRINT"MACHINE LANGUAGE INSTRUCTIONS WHICH" 14090 PRINT"RESIDE IN MEMORY FROM 40960." 14105 PRINT"THAT IS: $A000" 14110 GOSUB63000 14120 PRINT"[147]MACHINE LANGUAGE INSTRUCTIONS ARE" 14130 PRINT"NUMBERS FROM 0 TO 255..AND EACH MEANS" 14140 PRINT"SOMETHING SPECIAL." 14150 PRINT"FOR EXAMPLE THE SEQUENCE OF NUMBERS:" 14160 PRINT"169[146] 170[146] 141[146] 0[146] 4[146]" 14170 PRINT"SAYS TO PUT AN ASTERISK IN THE UPPER" 14180 PRINT"LEFT CORNER OF THE SCREEN." 14190 PRINT"HERE ARE SOME 'INSTRUCTIONS' TAKEN FROM" 14200 PRINT"THE INTERPRETER 'HIMSELF' (HERSELF?):":GOSUB63000:PRINT"[145][145][145][145][145][145][145]" 14210 FORI=0TO15:PRINTPEEK(40960+I);:FORJ=1TO100:NEXT:NEXT 14230 GOSUB63000 14240 PRINT"[147]OK...IF YOU CAN TALK MACHINE LANGUAGE" 14250 PRINT"THEN YOU CAN PUT YOUR M-L PROGRAM" 14260 PRINT"INTO MEMORY STARTING AT SOME" 14270 PRINT"LOCATION, SAY 20000, THEN SYS 20000" 14280 PRINT"WILL SEND ME THERE TO OBEY." 14290 PRINT"YOU MIGHT STICK YOUR PROGRAM UP AT THE" 14300 PRINT"'TOP OF BASIC RAM' SOMEWHERE AND" 14310 PRINT"PROTECT IT FROM BEING OVERWRITTEN" 14320 PRINT"BY CHANGING 'TOP' (AT 55/56 REMEMBER?)" 14330 GOSUB63000 14340 PRINT"[147]" 14350 PRINT"10 FORI=25000TO25024:READK:POKEI,K:NEXT:END" 14360 PRINT"20 DATA 162,4,160,4,132,177,160,0,132,176,177,176,73,128" 14370 PRINT"30 DATA 145,176,200,208,247,230,177,202,208,242,96" 14371 PRINT"RUN10" 14372 PRINT"SYS25000" 14375 PRINT"HERE'S A M-L PROGRAM YOU CAN TRY" 14380 PRINT"ENTER THESE, THEN RUN10[146], THEN SYS25000" 14390 PRINT"(THEN TYPE @[146] TO CONTINUE)" 14400 PRINT"":SN$="15000":GOTO63300 15000 GOSUB60000:PRINT"[147]":MS$=" SLICK EH?[146]":GOSUB63100 15010 PRINT"[147]ONE M-L INSTRUCTION WHICH IS NICE" 15020 PRINT"IS ZERO (I MEAN 0)." 15030 PRINT"THIS INSTRUCTION TELLS ME TO JUMP TO THE" 15040 PRINT"'M[146]ACHINE L[146]ANGUAGE M[146]ONITOR'." 15050 PRINT"(I LIKE THE MLM[146] SO MUCH I SOMETIMES" 15060 PRINT"JUMP THERE ON MY OWN!)" 15070 PRINT"TO GET OUT OF THE MLM JUST TYPE AN 'X'" 15080 PRINT"AND HIT THE 'RETURN' KEY." 15085 GOSUB63000 15090 PRINT"[147]LET'S TRY JUMPING TO THE MLM." 15100 PRINT"HIT A KEY WHEN YOU'RE READY TO TRY." 15110 PRINT" REMEMBER HOW TO GET OUT! " 15115 PRINT" TYPE 'X' THEN HIT 'RETURN' " 15120 PRINT"THEN @[146] TO CONTINUE..":SN$="16000":GOSUB63600 15130 GOSUB63001:SN$="16000":GOSUB63600 15140 SYS2048:GOSUB63000 16000 GOSUB60000:PRINT"[147]OK..IF YOU[157][157][157][184][184][184][145] WANT TO ENTER THE MLM" 16010 PRINT"YOU CAN FIND ANY MEMORY LOCATION WHICH" 16020 PRINT"CONTAINS '0' AND SEND ME THERE WITH SYS[146]." 16030 PRINT"ONE GOOD PLACE IS 2048. IT ALWAYS.." 16040 PRINT".....WELL , ALMOST ALWAYS...." 16050 PRINT"CONTAINS '0'." 16060 PRINT"TRY SYS2048[146]. (REMEMBER 'X' TO EXIT)" 16070 PRINT"THEN TYPE @[146] TO CONTINUE..":SN$="17000":GOTO63300 17000 GOSUB60000:PRINT"[147]ONCE IN THE MLM YOU CAN DISPLAY THE" 17010 PRINT"CONTENTS OF MEMORY MORE EASILY THAN" 17020 PRINT"WITH PEEK(THIS) AND PEEK(THAT)." 17030 PRINT"HAVING DONE YOUR SYS2048[146] I'LL GIVE" 17040 PRINT"B*" 17050 PRINT" PC SR AC XR YR SP 17060 [153]".; 0801 30 30 3A 2A F7 17070 PRINT". 17080 [153]"NOW IF YOU TYPE :" 17090 [153]".M A000 A00F" 17100 [153]"SO IT LOOKS LIKE:" 17105 [141]63000 17110 [153]"LOADB*" 17120 [153]" PC SR AC XR YR SP 17130 PRINT".; 0801 32 04 5E 00 F8 17140 [153]".M A000 A00F 17150 PRINT"THEN HIT 'RETURN'...I'LL DISPLAY MEMORY" 17160 PRINT"FROM A000 TO A00F (THAT'S HEXADECIMAL!)" 17170 PRINT"TRY IT! (REMEMBER 'X' TO EXIT MLM)":PRINT"THEN TYPE @[146]" 17180 SN$="18000":GOTO63300 18000 GOSUB60000:PRINT"[145][145][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166][166]" 18005 PRINT"NOTICE THAT THE NUMBERS I DISPLAY ARE" 18010 PRINT"IN HEXADECIMAL[146]!" 18020 PRINT"IN FACT YOU'VE SEEN THEM BEFORE." 18030 PRINT"THEY'RE FROM 'THE INTERPRETER'." 18040 PRINT"I LAST GAVE THEM TO YOU IN 'DECIMAL'." 18050 PRINT"(PEEK[146] ALWAYS GIVES DECIMAL)" 18060 GOSUB63000:PRINT"[147]" 18070 MS$="AU REVOIR![146]":GOSUB63100:GOSUB63500:END 59000 PRINT"[147]":GOSUB63100 59001 PRINT"DURING THE TUTORIAL YOU MAY WISH" 59002 PRINT"TO RETURN TO AN EARLIER 'PAGE'." 59003 PRINT"JUST HIT THE @-KEY[146], AT ANY TIME," 59004 PRINT"AND THE TUTORIAL WILL BACK UP" 59005 PRINT"A PAGE OR TWO." 59006 PRINT"ALSO, YOU HAVE AN OPPORTUNITY TO" 59007 PRINT"COMPOSE YOUR OWN PROGRAMS." 59008 PRINT"WHEN YOU WISH TO CONTINUE WITH" 59009 PRINT"THE TUTORIAL, HIT THE @-KEY[146]!":GOSUB63000 59010 MS$="@[146]_REMEMBER":GOSUB63100 59020 GOSUB63000:RETURN 60000 POKE204,1:REM INITIALIZE 60001 BT$="":FORI=1TO24:BT$=BT$+"":NEXT 60002 PT$="[176][192][192][192][192][192][192][192][192][192][192][174][157][157][157][157][157][157][157][157][157][157][157][157][221][221][157][157][157][157][157][157][157][157][157][157][157][157][173][178][192][192][192][192][192][192][192][192][178][189]" 60003 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][206][163][163][163][163][163][163][163][163][163][163][163][163][205][157][157][157][157][157][157][157][157][157][157][157][157][157][157][165]============[167]" 60004 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][208][207][163][163][163][163][163][163][163][163][163][163][208][207][145][145][145][145][157][157][157][157][157][157][157][157][157][157][157][157]" 60005 PT$=BT$+"[145][145][145][145][145][145]"+PT$+"[144]" 60007 ML$="" 60008 WD=40:CRT=1024:PRINTCHR$(142) 60009 W2=WD/2:W3=WD-1:W1$=MID$(STR$(WD),2): 60010 W2$=MID$(STR$(W2),2):W3$=MID$(STR$(W3),2) 60020 PRINT"[147]":POKE53281,15:POKE53280,12:PRINT"[144]" 60998 IFPEEK(789)<>7*16+15THENSYS(7*4096+15*256+12*16+3) 60999 RETURN 61000 REM*NEW WORKSPACE 61001 M=7*4096+15*256+15*16 61002 RESTORE 61003 FORI=MTOM+15:READK:POKEI,K:NEXT 61004 DATA 1,96,3,96,3,96,3,96 61005 DATA 144,127,0,0,144,127,0,0 61006 M=6*4096:FORI=0TO2:POKEM+I,0:NEXT 61007 RETURN 63000 PRINT"HIT RETURN[146] TO CONTINUE"; 63001 GETA$:IFA$<>""THEN63001 63002 GETA$:IFA$=""THEN63002 63003 RETURN 63100 FORT=1TO5:PRINTPT$MS$; 63101 PRINTPT$" "; 63102 PRINTPT$MS$;:NEXT 63103 PRINT:RETURN 63200 POKE56,96:POKE52,96:POKE55,0:POKE51,0:GOSUB61000 63201 WD=40:CRT=1024:POKECRT,96:IFPEEK(CRT+1024)<>96THENWD=80:PRINTCHR$(142) 63202 M=7*4096+15*256+9*16 63203 FORI=MTOM+91:READK:POKEI,K:NEXT 63204 DATA165,203,201,46,208,83,32,195,127,165,44,201,8,240,3,32,177,127,32 63205 DATA142,166,165,44,201,8,240,3,76,128,164,76,174,167,162,16,189,239 63206 DATA127,72,181,42,157,239,127,104,149,42,202,208,241,96,120,173,238,127 63207 DATA77,20,3,141,20,3,173,239,127,77,21,3,141,21,3,88,96,173,20,3,73 63208 DATA144,141,238,127,173,21,3,73,127,141,239,127,96,76,255,255 63216 POKEM+90,PEEK(788):POKEM+91,PEEK(789) 63220 KEY=7*4096+15*256+13*16+8 63221 SYS(KEY):REM KEY FOR IRQ SWAP 63299 RETURN 63300 REM*SWITCH TO NEW WORKSPACE 63301 GOSUB63600:REM RUN NUMBER 63302 GOSUB61000:REM NEW THE WORKSPACE 63303 GOTO63403 63400 REM*SWITCH TO OLD WORKSPACE 63401 GOSUB63600 63403 SWTCH=7*4096+15*256+9*16+15 63404 SYS(SWTCH):REM SWAP POINTERS 63405 POKE204,2:END 63500 REM*RESTORE PET 63501 SN$="100":GOSUB63600 63502 M=7*4096+15*256+12*16+3:IFPEEK(789)=7*16+15THENSYSM 63503 RETURN 63600 REM*INSERT RUN NUMBER 63601 M=2059:SN$="00000"+SN$ 63602 FORI=1TO5:POKEM-I,ASC(RIGHT$(SN$,I)):NEXT:RETURN